/**
 * 安卓白金英雄坛制作组 <br>
 * 文件名：DoubleScrollScreen.java <br>
 * 创建时间：2013-12-23 下午4:47:53 <br>
 * 所属项目：GmudEX <br>
 * @author 12548 <br>
 */
package lostland.gmud.exv2.ui.core;

import com.orhanobut.logger.Logger;

import lostland.gmud.exv2.data.Skill;
import lostland.gmud.exv2.ui.AutoButton;

/**
 * 类名：DoubleScrollScreen <br>
 * 说明：
 *
 * @author 12548
 */
public abstract class DoubleScrollScreen extends ButtonControlledScreen {

	public LeftScrollView v1;
	public RightScrollView v2;
	protected int layer = 0;

	protected String s1[], s2[][];

	protected int x;
	protected int y;
	protected int w1;
	protected int w2;
	protected int max;
	protected boolean __inventory_inbattle = false;
	protected int __skill_sticking[][] = new int[10][Skill.getSkillCount()];

	public abstract void cancel();


	/**
	 * @param x   左上角x坐标
	 * @param y   左上角y坐标
	 * @param w1  左侧窗口宽度
	 * @param w2  右侧窗口宽度
	 * @param max 最大同时显示数目
	 */
	public DoubleScrollScreen(int x, int y, int w1, int w2, int max) {
		super();
		this.x = x;
		this.y = y;
		this.w1 = w1;
		this.w2 = w2;
		this.max = max;
		gets();
		v1 = new LeftScrollView(s1, x, y, w1, max);
		re();
	}

	public abstract void gets();

	public void re() {
		gets();
		int t = 0;

		if (layer == 1 && v2 != null) {
			t = v2.cursor;
		}

		v2 = new RightScrollView(s2[v1.cursor], x + w1 - 1, y, w2, max);

		if (layer == 1) {
			v2.cursor = t;
		}

		v1.refresh();
		v2.refresh();

		if (layer == 0) {
			for (GmudWindow i : v2.buttons) {
				i.setBordered(false);
			}
		}

		checkin();
	}

	public abstract void checkin();

	/* （非 Javadoc）
	 * @see lostland.gmud.exv2.ui.core.ButtonControlledScreen#onButtonClick(lostland.gmud.exv2.ui.core.NewButton)
	 */
	@Override
	public void onButtonClick(NewButton b) {
		if (b == NewButton.NB_ENTER) {
			if (layer == 0) {
				if (s2[v1.cursor].length <= 0) return;
				layer++;
				re();
			} else {
				onClick(v2.cursor);
				re();
				if (s2[v1.cursor].length <= 0) {
					layer--;
				}
			}

		} else if (b == NewButton.NB_BACK) {
			if (layer == 1) {
				layer--;
				re();
			} else {
				cancel();
			}
		} else {
			if (layer == 0) {
				v1.onButtonClick(b);
			} else {
				v2.onButtonClick(b);
			}
			re();
		}
	}

	public abstract void onClick(int cursor);

	/* （非 Javadoc）
	 * @see lostland.gmud.exv2.ui.core.ButtonControlledScreen#show()
	 */
	@Override
	protected void show() {
		drawbg();
		v1.show();
		v2.show();
	}


	public abstract void drawbg();

	public static class LeftScrollView extends ScrollableMenuScreen {

		/**
		 * @param s
		 * @param x
		 * @param y
		 * @param width
		 * @param max
		 * @param instance
		 */
		public LeftScrollView(String[] s, int x, int y, int width, int max) {
			super(s, x, y, width, max, true);
		}

		/* （非 Javadoc）
		 * @see lostland.gmud.exv2.ui.core.ScrollableMenuScreen#drawbg()
		 */
		@Override
		public void drawbg() {

		}


		/* （非 Javadoc）
		 * @see lostland.gmud.exv2.ui.core.ScrollableMenuScreen#onClick(int)
		 */
		@Override
		public void onClick(int i) {
			Logger.e("error");
		}

		/* （非 Javadoc）
		 * @see lostland.gmud.exv2.ui.core.ScrollableMenuScreen#onCancel()
		 */
		@Override
		public void onCancel() {
		}

	}

	public static class RightScrollView extends ScrollableMenuScreen {

		/**
		 * @param s
		 * @param x
		 * @param y
		 * @param width
		 * @param max
		 * @param instance
		 */
		public RightScrollView(String[] s, int x, int y, int width, int max) {
			super(s, x, y, width, max, true);
			for (AutoButton i : buttons) {
				i.setCheckEnabled(true);
			}
		}

		/* （非 Javadoc）
		 * @see lostland.gmud.exv2.ui.core.ScrollableMenuScreen#drawbg()
		 */
		@Override
		public void drawbg() {

		}


		public boolean isChecked(int index) {
			return buttons[index].isChecked();
		}

		public void setChecked(int index, boolean isChecked) {
			buttons[index].setChecked(isChecked);
		}


		/* （非 Javadoc）
		 * @see lostland.gmud.exv2.ui.core.ScrollableMenuScreen#onClick(int)
		 */
		@Override
		public void onClick(int i) {
			Logger.e("error");
		}

		/* （非 Javadoc）
		 * @see lostland.gmud.exv2.ui.core.ScrollableMenuScreen#onCancel()
		 */
		@Override
		public void onCancel() {
		}

	}


	/* （非 Javadoc）
	 * @see lostland.gmud.exv2.ui.core.ButtonControlledScreen#onButtonDown(lostland.gmud.exv2.ui.core.NewButton)
	 */
	@Override
	protected void onButtonDown(NewButton b) {
		// DO NOTHING
	}
}
